1. The Field of the Invention
The present invention relates to electronic messaging and, more particularly, to flexibly transferring typed application data.
2. Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include the exchange of electronic messages between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
Networks have in fact become so prolific that a simple network-enabled computing system may communicate with any one of millions of other computing systems spread throughout the globe over a conglomeration of networks often referred to as the “Internet”. Such computing systems may include desktop, laptop, or tablet personal computers; Personal Digital Assistants (PDAs); telephones; or any other computer or device capable of communicating over a digital network.
In order to communicate over a network, one computing system (referred to herein as a “sending computing system”) constructs or otherwise accesses an electronic message and transmits the electronic message over a network to another computing system (referred to herein as a “receiving computing system”). The electronic message may be read by a human user as when the electronic message is an e-mail or instant message, or may be read, instead, by an application running on the receiving computing system. The electronic message may be constructed by an application running on the sending computing system with the possible assistance of a human user.
Thus in some environments, messages are exchanged between distributed applications with little, if any, direct user interaction. One protocol used for exchanging messages between distributed applications (e.g., Web services) is the Simple Object Access Protocol (“SOAP”). SOAP is a lightweight protocol intended for exchanging information in a decentralized, distributed environment. SOAP uses eXtensible Markup Language (“XML”) technologies to define an extensible messaging framework providing message constructs that can be exchanged over a variety of underlying protocols, such as, for example, Simple Mail Transfer Protocol (“SMTP”), HyperText Transfer Protocol (“HTTP”), User Datagram Protocol (“UDP”), Transmission Control Protocol (“TCP”), and named pipes. SOAP messages can be defined in an open-ended matter as a SOAP infoset (e.g., XML elements) having a set of message headers and a message body.
Many applications are designed using method and/or object-oriented programming models. These programming models frequently use type data formats (e.g., integer, string, logical, or user-defined data formats) to exchange objects between modules. For example, a method can receive one or more typed objects (e.g., parameters of various different data type formats) as input. In response, the method can generate and output (potentially different) values for the typed objects or can return a typed object of a different data type (e.g., the data type of the method). The use of typed data formats is advantageous since it allows a developer to design applications and modules using data types that are more appropriate and/or more efficient based on application and/or module functionality.
Thus in distributed application environments, it may be that typed objects are to be exchanged between different portions of a distributed application. For example, to facilitate a banking transaction, a distributed banking client can exchange a typed banking transaction data structure with a distributed banking server. However, it can be difficult to design distributed applications that utilize the advantages of typed data formats along with the flexibility of SOAP messages.
SOAP is an open-ended protocol and thus places virtually no requirements on mapping application and/or user data into a SOAP message and vice versa. Thus, there are limited, if any, mechanisms for mapping typed objects (e.g., Common Language Runtime (“CLR”) types) to corresponding SOAP messages and for mapping SOAP messages to corresponding typed objects. An inability to meaningfully map between typed objects and SOAP messages can make it more difficult, or even impossible, for distributed applications to exchange application and/or user data.
Further, typical mechanisms for encoding SOAP messages into raw octets limit the size of SOAP messages and limit the types of encoders that can be used. Therefore systems, methods, and computer program products for flexibly transferring typed application data would be advantageous.